Solução para arquivos com ^M no final de cada linha
Você criou um arquivo texto no Windows, e ao abrí-lo no Linux apareceu um ^M no final de cada linha? Veja como usar o Perl para resolver!
Digite a linha de comando abaixo, em um prompt Linux:
perl -pi -e 's/\r/\n/g' arquivo.txt
Explicação sobre o comando:
perl - interpretador de comandos em si;
-p = faz a leitura de todos os argumentos como arquivos e faz um print de todas as linhas no fim do processamento de cada uma;
-i = edita os arquivos que recebe como argumento;
-e = executa a expressão informada a seguir;
's/\r/\n/g' = s/string_atual/string_nova/g, onde:
s = Significa "substitute", ou seja, é utilizado no formato s/// quando se deseja substituir uma string por outra;
g = Significa que toda vez que for encontrada a "string_atual" no arquivo, esta será substituída pela "string_nova".
Obs.: Caso o "g" não seja especificado, somente a primeira ocorrência encontrada sera substituída.
\r = Representa o final de linha no padrão DOS/Windows;
\n = Representa o final de linha no padrão Unix/Linux.
Caso você necessite aplicar este comando em muitos arquivos, segue abaixo uma sugestão. :)
. que ja faz este servico, basta ir em FORMAT -> CONVERT TO UNIX FORMAT. há também uma aplicacao linux (dos2unix) que faz isso tb, embora nao tenha usado.
[4] Comentário enviado por gamont em 12/04/2009 - 23:56h
Só usando Vim.
:args *.txt (ou no shell: vim *.txt)
:argdo %s/^M$//ge | update
'args' carrega os arquivos.
'argdo' aplica os comandos em cada arquivo.
o primeiro comando substitue o carriage-return por nada
o segundo grava o arquivo, se houve alteração